package com.kehutong.charge.service;

import com.kehutong.charge.dto.ChargeStatistDTO;
import com.kehutong.charge.entity.ChargeHouseConfig;
import com.kehutong.charge.entity.ChargeHouseSet;
import com.kehutong.charge.entity.MeterManage;
import com.kehutong.charge.service.impl.ChargeHouseServiceImpl;
import com.kehutong.common.util.Token;
import org.coraframework.inject.ImplementedBy;
import org.coraframework.json.JSONObject;

import java.util.List;

/**
 * @program: kht
 * @description: 收费房屋配置
 * @author: joneron
 * @create: 2021/6/23
 **/
@ImplementedBy(ChargeHouseServiceImpl.class)
public interface ChargeHouseService extends BaseService<ChargeHouseConfig>{

    /**
     * 更新数据和添加收费配置
     * @param entity
     * @param jsonObject
     * @return
     */
    Object updateHouseSet(ChargeHouseConfig entity,JSONObject jsonObject);

    /**
     * 房屋配置设置保存
     * @param chargeHouseSet
     * @return
     */
    Object saveSet(ChargeHouseSet chargeHouseSet);

    /**
     * 查询收费配置详情
     * @param jsonObject
     * @return
     */
    Object findFeeDetail(JSONObject jsonObject);

    /**
     * 房屋设置集合数据
     * @param jsonObject
     * @return
     */
    List<ChargeHouseSet> findSetList(JSONObject jsonObject);

    /**
     * 房屋设置数据同步
     * @param jsonObject
     * @return
     */
    Object synHouseData(JSONObject jsonObject,Token token) throws Exception;

    /**
     * 收费设置数据统计
     * @param jsonObject
     * @return
     * @throws Exception
     */
    List<ChargeStatistDTO> findStatistPage(Token token, JSONObject jsonObject) throws Exception;

    /**
     * 房屋收费设置数据统计
     * @param jsonObject
     * @return
     * @throws Exception
     */
    List<ChargeStatistDTO> findHouseStatistPage(Token token, JSONObject jsonObject) throws Exception;

    Object get(ChargeHouseConfig entity);

    Object listByMultiple(JSONObject jsonObject);

    Object setStatus(ChargeHouseConfig entity);

    Object deleteChargeHouseSet(ChargeHouseSet chargeHouseSet);

    List<ChargeHouseSet>getChargeHouseSetBychargeHouseNo(JSONObject jsonObject);

    List<MeterManage>getMeterManageByParam(JSONObject jsonObject);

}
